package com.woniuxy.mapper;

import com.woniuxy.entity.dto.operations.ClientDetailDTO;
import com.woniuxy.entity.dto.operations.VehicleDisplayDTO;
import com.woniuxy.entity.po.operations.Vehicle;
import com.woniuxy.entity.po.operations.VehicleImg;

import java.util.List;

/**
* @author Quan
* @description 针对表【vehicle(存储车辆的详细信息)】的数据库操作Mapper
* @createDate 2025-03-27 15:28:02
* @Entity com.woniuxy.entity.po.operations.Vehicle
*/
public interface VehicleMapper {

	/**
	 * @Description: 通过条件查询车辆数据
	 * @Param: [vehicleDisplayDTO]
	 * @return: java.util.List<com.woniuxy.entity.po.operations.Vehicle>
	 * @Author: Quan
	 * @Date: 2025/4/1
	 */
	List<Vehicle> queryAll(VehicleDisplayDTO vehicleDisplayDTO);

	/**
	 * @Description: 将车辆数据存放数据库中
	 * @Param: [vehicleDisplayDTO]
	 * @return: void
	 * @Author: Quan
	 * @Date: 2025/4/1
	 */
	void addVehicle(VehicleDisplayDTO vehicleDisplayDTO);

	/**
	 * @Description: 将车辆的id与对应的图片地址存储到vehicle_img中
	 * @Param: [vehicleDisplayDTO]
	 * @return: void
	 * @Author: Quan
	 * @Date: 2025/4/1
	 */
	void addBatchImgSrcToVehicleImg(VehicleDisplayDTO vehicleDisplayDTO);

	/**
	 * @Description: 通过车辆id查询
	 * @Param: [id]
	 * @return: com.woniuxy.entity.dto.operations.VehicleDisplayDTO
	 * @Author: Quan
	 * @Date: 2025/4/1
	 */
	VehicleDisplayDTO queryVehicleById(Long id);

	/**
	 * @Description: 通过车辆id查询对应的所有图片
	 * @Param: [id]
	 * @return: java.util.List<com.woniuxy.entity.po.operations.VehicleImg>
	 * @Author: Quan
	 * @Date: 2025/4/1
	 */
	List<VehicleImg> queryVehicleImgByVehicleId(Long id);

	/**
	 * @Description: 通过id进行删除
	 * @Param: [ids]
	 * @return: void
	 * @Author: Quan
	 * @Date: 2025/4/1
	 */
	void batchDelImgById(List<Long> ids);

	/**
	 * @Description: 更新数据库中的数据，通过对应的id
	 * @Param: [vehicleDisplayDTO]
	 * @return: void
	 * @Author: Quan
	 * @Date: 2025/4/2
	 */
	void updateVehicle(VehicleDisplayDTO vehicleDisplayDTO);

	/**
	 * @Description: 只查询vehicle中的内容，不进行连表查询
	 * @Param: [id]
	 * @return: com.woniuxy.entity.po.operations.Vehicle
	 * @Author: Quan
	 * @Date: 2025/4/2
	 */
	Vehicle queryVehicleSimpleById(Long id);

	/**
	 * @Description: 对车辆的状态进行更新，如果是禁用，变为启用，如果是启用，变为禁用
	 * @Param: [vehicleDisplayDTO]
	 * @return: void
	 * @Author: Quan
	 * @Date: 2025/4/2
	 */
	void updateVehicleCondition(VehicleDisplayDTO vehicleDisplayDTO);

	/**
	 * @Description: 通过id对车辆进行删除
	 * @Param: []
	 * @return: void
	 * @Author: Quan
	 * @Date: 2025/4/2
	 */
	void deleteById(Long id);

	/**
	 * @Description: 根据车辆id对图片进行逻辑删除
	 * @Param: [id]
	 * @return: void
	 * @Author: Quan
	 * @Date: 2025/4/2
	 */
	void batchDelImgByVehicleId(Long id);

	/**
	 * @Description: 通过ids批量进行删除
	 * @Param: [ids]
	 * @return: void
	 * @Author: Quan
	 * @Date: 2025/4/2
	 */
	void batchDelVehicleById(List<Long> ids);

	/**
	 * @Description: 通过ids批量删除img
	 * @Param: [ids]
	 * @return: void
	 * @Author: Quan
	 * @Date: 2025/4/2
	 */
	void batchDelImgByVehicleIdList(List<Long> ids);

	/**
	 * @Description: 通过客户的id查询车辆的信息，用于在客户详情中展示
	 * @Param: [id]
	 * @return: java.util.List<com.woniuxy.entity.po.operations.Vehicle>
	 * @Author: Quan
	 * @Date: 2025/4/2
	 */
	List<Vehicle> queryVehicleByClientId(Long id);

	/**
	 * @Description: 删除用户持有的车辆信息
	 * @Param: [id]
	 * @return: void
	 * @Author: Quan
	 * @Date: 2025/4/7
	 */
	void delVehicleByClientId(Long id);

	/**
	 * @Description: 依据用户id对车辆进行批量删除
	 * @Param: [ids]
	 * @return: void
	 * @Author: Quan
	 * @Date: 2025/4/7
	 */
	void batchDelVehicleByClientId(List<Long> ids);
}




